iT邦幫忙

0

【ruby】leetcode 練習 :Merge Sorted Array

  • 分享至 

  • xImage
  •  

Example 1:

Input: nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3
Output: [1,2,2,3,5,6]
Explanation: The arrays we are merging are [1,2,3] and [2,5,6].
The result of the merge is [1,2,2,3,5,6] with the underlined elements coming from nums1.

Example 2:

Input: nums1 = [1], m = 1, nums2 = [], n = 0
Output: [1]
Explanation: The arrays we are merging are [1] and [].
The result of the merge is [1].

Example 3:

Input: nums1 = [0], m = 0, nums2 = [1], n = 1
Output: [1]
Explanation: The arrays we are merging are [] and [1].
The result of the merge is [1].
Note that because m = 0, there are no elements in nums1. The 0 is only there to ensure the merge result can fit in nums1.

Constraints:

nums1.length == m + n
nums2.length == n
0 <= m, n <= 200
1 <= m + n <= 200
-109 <= nums1[i], nums2[j] <= 109

解題:
觀察nums1的長度為 m + n ,且 nums1 陣列有預留位置,採由後往前的方式,使用 i 紀錄陣列指向的位置,並比較 m 與 n 的大小,依序修改 i 所記錄的值。

def merge(nums1, m, nums2, n)
  i = m+n-1
  while m>0 && n >0
    if nums1[m-1] > nums2[n-1]
      nums1[i] = nums1[m-1]
       m -= 1
    else
      nums1[i] = nums2[n-1]
      n -= 1
    end
    i -= 1
  end
  while n > 0
    nums1[i] = nums2[n-1]
    n -= 1
    i -= 1
  end
end

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言